#include <iostream>
#include <unistd.h>
#include <cstring>
#include <signal.h>

using namespace std;

// 自定义处理信号的函数
void handleFunc(int sig)
{
    cout << "sig:" << sig << endl;
}

int main()
{
#if 0
    int a = 100;
    int b = 0;

    // int c = a / b;
    // cout << "c:" << c << endl;

    while (1)
    {
        sleep(1);
    }
#endif

#if 0
    // 模拟一个段错误
    int *ptr = nullptr;
    *ptr = 10;
#endif

#if 0
    // 向一个没有读端的管道写数据
    int pipeFd[2] = { 0 };
    // 创建管道
    pipe(pipeFd);

    // 关闭管道的读端
    close(pipeFd[0]);

    const char *data = "hello world.";
    write(pipeFd[1], data, strlen(data));
#endif

#if 1
    // 注册信号
    /* 
        信号的处理方式有三种：
        1、默认
        2、忽略
        3、自定义
    */
    // signal(SIGINT, SIG_DFL); // 默认
    // signal(SIGINT, SIG_IGN); // 忽略
    signal(SIGINT, handleFunc); // 自定义

    while (1)
    {
        sleep(3);
        cout << "hello world" << endl;
    }

#endif

    return 0;
}